function PageGraphics(){
    /* COSTANTI ------------------------------------------------------------- */
    this.constant_divCategories="categorie-poi";
    this.constant_divReset="reset-filtri";
    this.constant_divPath="pathDiv";
    this.constant_divCalendar="calendari";
    this.constant_callbackCheckBoxes="callbackCheckBoxes()";
    this.constant_callbackPath="callbackPath()";
    this.constant_divDisplayMap="map_canvas";
    this.constant_divPathInsert='nuovo-percorso';
    /* FINE COSTANTI -------------------------------------------------------- */

    /* VARIABILI ------------------------------------------------------------ */
    //array che associa agli id delle varie categorie gli identificativi dei
    //radiobuttons associati
    this.arrayAssocCategorie=new Array();
    this.checkBoxesIds=new Array();
    this.selectedCheckBoxesIds=new Array();
    this.pathIds=new Array();
    this.divBalloonId=new Array();
    //variabili per l'attuale finestra del marker e per la lista di tutte le
    //finestre del marker
    this.actualWin=null;//id luogo del marker attuale
    this.allWin=Array();//array associativo int idLuogo => google.maps.InfoWindow
    this.targetDivs=Array();
    this.externalGraphicSources=Array();
    /* FINE VARIABILI ------------------------------------------------------- */
    /**
     * Disegna le categorie!
     */
    this.drawCategoriesList= function(arrayCategory){
        //var toWrite=document.getElementById(graphman.constant_divCategories);
        this.initTargetDivs();
        for(var i in arrayCategory){
            //indici delle categorie
            if(!isNaN(i)){
                //scrivo il div per ognuno
                this.writeCategories(arrayCategory[i]);
            }
        }

    //this.placeMenus();
    }
    /**
     * funzione che inizializza gli identificativi dei div a cui associare
     * le varie categorie
     */
    this.initTargetDivs=function(){
        this.targetDivs[1]=this.constant_divCategories;
        this.targetDivs[2]=this.constant_divCategories;
        this.targetDivs[3]=this.constant_divCalendar;
    }


    /**
     *
     */
    this.drawExternalGraphicsSources=function(callback){
        var gs;
        
        for(var j in this.externalGraphicSources){
            try{
                gs=this.externalGraphicSources[j];
                document.getElementById(gs.getTargetElementId()).innerHTML+=gs.writeControl(callback);
            } catch(e){
                alert(dump(e));
            }
        }
    }
    /**
     * aggiunge una fonte di controlli grafici
     */
    this.addExternalGraphicsSource=function(egs){
        this.externalGraphicSources.push(egs);
    }
    /**
     * Crea un div e chiama il metodo writecheckbox per inserire le varie
     * categorie singole appartenenti alla famiglia
     * toWrite: l'elemento in cui scrivere (tramite innerHTML+=)
     * famiglia: l'array contenente i dati della famiglia di tipologie
     */
    this.writeCategories=function(famiglia){
        //alert(this.targetDivs[famiglia.idfam]);
        var toWrite=document.getElementById(this.targetDivs[famiglia.idfam]);
        //        if(toWrite==null)
        //            document.getElementById(this.targetDivs[famiglia.idfarm]);
        var status="inizio";
        var idFamm=famiglia.idfam;
        var nomeFamm=famiglia.nomefam;
        var totalString="";
        try{
            if(famiglia==null)
                return;
            if(famiglia.idfarm &&! idFamm){
                idFamm=famiglia.idfarm;
            }
            status="fineChecks";
            totalString+=
            "<div class=\"famiglia-tipologie famiglia-tipologie-"+idFamm+"\">"
            +nomeFamm+"<br/>";
            status="fine div";
            for(var j in famiglia.elementi){
                status="elemento "+j;
                if(j!=null)
                    totalString+=this.getCheckboxText(famiglia.elementi[j]);
            }
            
            totalString+="</div><!--f2-->";
            toWrite.innerHTML+=totalString;
        } catch(e){
            alert("error in writeCategories:"+status+" "+dump(e));
        }
    }
    
    /**
     * Metodo che permette di scrivere una singola riga contenente una checkbox
     * In questo metodo viene utilizzata la costante callback_checkBoxes nella
     * cui stringa vengono rimpiazzati gli elementi %fam e %cat con gli
     * identificativi della famiglia e della categoria adeguate
     * parametri:
     * toWrite: l'elemento in cui scrivere (tramite innerHTML+=)
     * tipologia: l'array contenente i dati della tipologia
     */
    this.getCheckboxText=function(tipologia){
        var toWrite="";
        try{
            var callbackString=this.constant_callbackCheckBoxes;
            this.checkBoxesIds[tipologia.idfam+"_"+tipologia.idcat]="checkbox-tipologia-"+tipologia.idfam+"_"+tipologia.idcat;
            //VERSIONE DI CHECKBOXES CON FLAG
            var nomecat=tipologia.nomecat;
            if(nomecat=='all')
                nomecat='Per ogni et&agrave;';
            toWrite+="\
            <input class=\"categoryList\" type=\"checkbox\"\
            id=\""+this.checkBoxesIds[tipologia.idfam+"_"+tipologia.idcat]+"\"\
            onclick=\""+callbackString+"\"> "+nomecat+"<br/>\n";
            
        //VERSIONE CHE DIVENTA BALD
        //            toWrite+=
        //            "<div class=\"categoryList\" id=\""+this.checkBoxesIds[tipologia.idfam+"_"+tipologia.idcat]+"\">"+
        //            "<a href=\"javascript:graphman.toggleChecked('"+tipologia.idfam+"_"+tipologia.idcat+"');"+callbackString+"\">\n"+
        //            tipologia.nomecat+
        //            "</a></div><!--f1-->";
        } catch(e){
            alert("errore in writeCheckbox"+dump(e));
        }
        return toWrite;
    }

    this.getTime=function(){
        var tempo=Array();
        tempo[0]=document.getElementById('giorni').value;
        tempo[1]=document.getElementById('orainizio').value;
        tempo[2]=document.getElementById('orafine').value;
        return tempo;
    }

    /**
     *scrive i controlli per la selezione del tempo
     */
    this.writeTimeSelection=function(){
        var callbackString=this.constant_callbackCheckBoxes;
        var script='Giorno: <br/>'+
        '<select id="giorni" onchange="'+callbackString+'">'+
        '<option value="29-10">29/10</option>'+
        '<option value="30-10">30/10</option>'+
        '<option value="31-10">31/10</option>'+
        '<option value="01-11">1/11</option>'+
        '<option value="02-11">2/11</option>'+
        '<option value="03-11">3/11</option>'+
        '<option value="04-11">4/11</option>'+
        '<option value="05-11">5/11</option>'+
        '<option value="06-11">6/11</option>'+
        '<option value="07-11">7/11</option>'+
        '</select><br/>'+
        'orario:<br/>'+
        '<select id="orainizio" onchange="'+callbackString+'">'+
        '<option selected value="09:00">9:00</option>'+
        '<option value="10:00">10:00</option>'+
        '<option value="11:00">11:00</option>'+
        '<option value="12:00">12:00</option>'+
        '<option value="13:00">13:00</option>'+
        '<option value="14:00">14:00</option>'+
        '<option value="15:00">15:00</option>'+
        '<option value="16:00">16:00</option>'+
        '<option value="17:00">17:00</option>'+
        '<option value="18:00">18:00</option>'+
        '<option value="19:00">19:00</option>'+
        '<option value="20:00">20:00</option>'+
        '<option value="21:00">21:00</option>'+
        '<option value="22:00">22:00</option>'+
        '</select> -'+
        '<select id="orafine" onchange="'+callbackString+'">'+
        '<option value="10:00">10:00</option>'+
        '<option value="11:00">11:00</option>'+
        '<option value="12:00">12:00</option>'+
        '<option value="13:00">13:00</option>'+
        '<option value="14:00">14:00</option>'+
        '<option value="15:00">15:00</option>'+
        '<option value="16:00">16:00</option>'+
        '<option value="17:00">17:00</option>'+
        '<option value="18:00">18:00</option>'+
        '<option value="19:00">19:00</option>'+
        '<option value="20:00">20:00</option>'+
        '<option value="21:00">21:00</option>'+
        '<option value="22:00">22:00</option>'+
        '<option selected value="23:00">23:00</option>'+
        '</select>';
        document.getElementById(this.constant_divCalendar).innerHTML=script;
    }
    /**
     * evidenzia le categorie selezionate
     */
    this.toggleChecked=function(strcat){
        var unchecked,x;
        //var tmpchar=arrayContains(this.selectedCheckBoxesIds, this.checkBoxesIds[tipologia.idfam+"_"+tipologia.idcat])?"O":"";
        //alert(dump(this.selectedCheckBoxesIds));
        unchecked=removeByElement(this.selectedCheckBoxesIds, strcat);
        if(!unchecked){
            this.selectedCheckBoxesIds.push(strcat);
        }
        //alert(unchecked);
        //l'id dell'elemento selezionato è this.checkBoxesIds[strcat];
        if(!unchecked){
            try{
                x=document.getElementById(this.checkBoxesIds[strcat]);
                x.style.fontWeight="bold";
            } catch(e){
                alert("Errore di sistema "+dump(e));
            }

        } else {
            try{
                x=document.getElementById(this.checkBoxesIds[strcat]);
                x.style.fontWeight="normal";
            } catch(e){
                alert("Errore di sistema "+dump(e));
            }
        }
    }

    /**
     * Rimuove tutti i filtri
     */
    this.resetAllFilters=function(){
        
        this.pathChecked('null');
        pathman.pathToShow=null;
        for(var q in this.checkBoxesIds){
            document.getElementById(this.checkBoxesIds[q]).checked=false;
        }
        mapman.hideAllPaths();
        if(phcman.getStatus()!=phcman.STAT_VOID)
            mapman.reloadCreatedPath();
        ctrl.reloadEvents();
    }
    /**
     * Metodo che permette di scrivere una lista di radio button facenti
     * riferimento ad altrettanti path
     */
    this.drawPathList=function(pathList){
        //var callbackString=this.constant_callbackPath.replace("%idpath", 'null');
        document.getElementById(this.constant_divReset).innerHTML='<input type="button"'+
        'value="Cancella filtri" onclick="graphman.resetAllFilters();" />'
        var toWrite=document.getElementById(this.constant_divPath);
        var string="";
        //this.pathIds['null']="checkbox-path-null";
        string+="<div class=\"famiglia-path\"><br/>Lista percorsi<br/>";
        //        string+="<input type=\"checkbox\" name=\"checkbox-path\" checked id=\""+this.pathIds['null']+"\""+
        //            "onclick=\"graphman.pathChecked('null');"+callbackString+"\"> Visualizza la mappa</br>\n";

        for(var j in pathList){
            if(!isNaN(j)){
                //alert(dump(pathList[j]));
                string+=this.writePath(pathList[j]);
            }
        }
        toWrite.innerHTML=string+"</div><!--f3-->";
    }


    /**
     * Metodo che permette di scrivere una singola riga contenente una checkbox
     * In questo metodo viene utilizzata la costante callback_checkBoxes nella
     * cui stringa vengono rimpiazzati gli elementi %fam e %cat con gli
     * identificativi della famiglia e della categoria adeguate
     * parametri:
     * toWrite: l'elemento in cui scrivere (tramite innerHTML+=)
     * tipologia: l'array contenente i dati della tipologia
     */
    this.writePath=function(path){
        var callbackString=this.constant_callbackPath.replace("%idpath", path['id']);
        var ret="";
        //alert(dump(path));
        this.pathIds[path['id']]="checkbox-path-"+path['id'];
        ret+="\
            <input type=\"checkbox\"\
            name=\"checkbox-path\"\
            id=\""+ this.pathIds[path['id']]+"\"\
            onclick=\"graphman.pathChecked("+path['id']+");"+callbackString+"\"> "+path['nome'];
        //parte di algoritmo che permette di cancellare il path
        if(path['utente']==getUtente())
            ret+=" - <a href='javascript:pathman.deletePath("+path['id']+");'>cancella</a>";
        
            
        ret+="<br/>\n";
        return ret;
    }

    /**
     * funzione che deseleziona tutti i path eccetto quello selezionato
     */
    this.pathChecked=function(idpath){
        var control=true;
        for(var j in this.pathIds){
            if(this.pathIds[j]!=("checkbox-path-"+idpath)){
                try{
                    document.getElementById(this.pathIds[j]).checked=false;
                } catch(e){
                    alert(dump(e));
                }
            } else {
                control=document.getElementById(this.pathIds[j]).checked;
            }
        }
        if(control)
            pathman.pathToShow=null;
    }
    /**
     * setta come selezionato il path nullo
     */
    this.unselectAllPaths=function(){
        //this.pathChecked('null');
        for(var j in this.pathIds){
            if(document.getElementById(this.pathIds[j])!=null){
                if(document.getElementById(this.pathIds[j]).checked!=null){
                    document.getElementById(this.pathIds[j]).checked=false;
                }
            }
        }
    //        if(document.getElementById(this.pathIds['null']).value!='on')
    //            document.getElementById(this.pathIds['null']).click();
    }

    this.setDivCategories=function(newDivcategories){
        this.constant_divCategories=newDivcategories;
    }    
    this.setCallbackCheckboxes =function(newCallback){
        this.constant_callbackCheckBoxes=newCallback;
    }
    this.setCallbackPath=function(newCallback){
        this.constant_callbackPath=newCallback;
    }
    /**
     * metodo che permette di recuperare i checkboxes flaggati
     * ret: array contenente gli identificativi dei checkboxes flaggati
     */
    this.getCheckedCheckboxes=function(){
        var ret=Array();
        //CHECKED CON CHECKBOX
        //        for(var i in this.selectedCheckBoxesIds){
        //            ret.push(this.selectedCheckBoxesIds[i]);
        //        }
        //CHECKED CON LINK JAVASCRIPT
        for(var idCat in this.checkBoxesIds){
            //alert("this.checkBoxesIds["+idCat+"]"+document.getElementById(this.checkBoxesIds[idCat]).checked);
            try{
                if(document.getElementById(this.checkBoxesIds[idCat])!=null &&document.getElementById(this.checkBoxesIds[idCat]).checked){
                    ret.push(idCat);//alert(idCat);//-------------------
                }
            } catch(e){
                alert("errore in getCheckedCheckboxes:"+e.toString());
            }
        }
        //alert(dump(ret));
        return ret;
    }
    /**
     * Metodo che restituisce il radio button contenente il path attualmente
     * visualizzato
     */
    this.getSelectedPath=function(){
        for(var j in this.pathIds){
            if(document.getElementById(this.pathIds[j]).checked){
                return j;
            }
        }
        return null;
    }
    /**
     * Metodo che permette di disegnare gli eventi nei poi
     */
    this.drawEvents=function(evts){
        mapman.viewPlaces(evts);
    }

    /**
     * Visualizza una lista di eventi all'interno del balloon di google maps
     * NOTA: se arrayEventi contiene un solo evento, verrà visualizzato invece
     * il singolo evento
     */
    this.getMapsBalloonContent= function(arrayEventi){
        var nomeLuogo="";
        for(var j in arrayEventi){
            if(!isNaN(j)){
                nomeLuogo="<b>"+arrayEventi[j].nome_luogo+"</b><br/>";
                idLuogo=arrayEventi[j].id_luogo;
                break;
            }
        }
        var ret="<div class='tem_balloon' id=\"luogo_"+idLuogo+"\">";
        ret+="<p class='tem_title'>"+nomeLuogo+"</p>";
        for(var kk in arrayEventi){
            if(!isNaN(kk)){
                ret+="<p><a href=\"javascript:graphman.loadEvtInWin('"+arrayEventi[kk].id+"');\">"+arrayEventi[kk].nome+"</a></p>";
            }
        }
        return ret+"</div><!--f4-->";
    }
    
    /**
     * Mostra un singolo evento all'interno del balloon di google maps
     */
    this.getMapsBalloonEvent=function(evento){
        var initp, endp,initt,endt,endMuseum;
        var status='init';
        var pauseT=0;
        var isThereO=false;
        //alert(dump(evento));
        //        var arrT=Array();
        var ret="<p class='tem_title'><b>"+evento.nome+"</b></p>";
        ret+="<p>"+evento.descrizione+"</p><br/>";
        ret+="<p>Luogo: "+evento.nome_luogo+"</p><br/>";
        var evt=evento;
        //alert(dump(evt));
        var retarray=Array();
        var datin,arrdatin;
        if(evt.orari){
            
            //alert(dump(evt.orari));
            for(var p in evt.orari){
                if(!isNaN(p)){
                    //se l'orario è oggi
                    //TODO: porcata
                    datin=document.getElementById('giorni').value;
                    arrdatin=datin.split('-');
                    datin="2010-"+arrdatin[1]+'-'+arrdatin[0];
                    if(evt.orari[p].data==datin){
                        retarray.push(evt.orari[p]);
                        //alert(datin+" "+evt.orari[p].data);
                        isThereO=true;
                    }
                }
            }
            retarray.sort(function(a,b){
                return convertStringTimeToSeconds(a.inizio)-convertStringTimeToSeconds(b.inizio);
            });
        }
        //alert(' no errors');
        //ret+=dump(evento);
        if(evt.target){
            ret+="<p>Target di et&agrave;:<br/>";
            ret+="&nbsp;&nbsp;"+evt.target;
            ret+="</p>";
        }
        if(isThereO)
            ret+="<p>Orari: ";
        evt.orari=retarray;
        for(var j in evt.orari){
            try{
                status='for'+j;
                if(!isNaN(j)){
                    ret+="<br/>&nbsp;&nbsp;"+evt.orari[j].inizio+"-"+evt.orari[j].fine;
                    if(evt.orari[j].vinc) ret+="<b>*</b>";
                    if(phcman.getStatus()==phcman.STAT_CREATING_PATH){
                        status='initp'+j;
                        initp=phcman.getLastPoint();
                        status='initt'+j;
                        initt=phcman.getLastTime();//SBAGLIATO
                        status='endp'+j;
                        endp=new google.maps.LatLng(evt.lat,evt.lon);
                        status='endt'+j;
                        endt=convertStringTimeToSeconds(evt.orari[j].inizio);
                        status='endMuseum'+j;
                        endMuseum=convertStringTimeToSeconds(evt.orari[j].fine);
                        status='acceptable'+j;
                        pauseT=mapman.getTimeBetweenPoints(initp, endp, evento.id, graphman.loadEvtInWin);
                        //alert("creating path, "+"traveltime="+pauseT+" initt="+initt+" endt="+endt);
                        if((pauseT)!=null){
                            //arrT.push("traveltime="+pauseT+" initt="+initt+" endt="+endt);
                            //alert("traveltime="+pauseT+" initt="+initt+" endt="+endt);
                            if((pauseT+initt<endt) || (isMuseum(evt,evt.orari[j])&&(initt+pauseT<endMuseum/*prima della chiusura*/))){
                                ret+="<a href='javascript:mapman.addPoint("+evt.id+","+evt.orari[j].id_tempo+");'> aggiungi al percorso</a>";
                            } else ret+=" - ";
                        } else ret+=" loading... ";
                    }
                }
            } catch(exn){
                alert("errore in getMapsBalloonEvent("+status+"):"+exn);
            }
        }
        if(isThereO)
            ret+="</p>";
        if(evt.avoidLink!=true)
            ret+="<p><a href='http://www.festivalscienza.it/site/fscienza/matchevent.jsp?id="+evt.id+"' target='_blank'>Leggi tutto</a></p>";
        //alert(dump(arrT));
        ret+="<a href=\"javascript:graphman.loadEvtsInWin("+evento.id_luogo+");\">indietro</a>";
        return "<div class='tem_balloon'>"+ret+"</div><!--f5-->";
    }

    /**
     * Funzione chiamata quando si carica un singolo evento in una finestra
     */
    this.loadEvtInWin=function(idevt){
        status='init';
        try{
            //alert(dump(evtman.eventList[idevt]));
            var evt=evtman.eventList[idevt];
            status="recupero da evtman "+evt.id;
            graphman.allWin[graphman.actualWin].setContent(graphman.getMapsBalloonEvent(evt));
            status="setto  "+this.actualWin;
            graphman.allWin[graphman.actualWin].open(mapman.map,mapman.placesList[evt.id_luogo].marker);
        } catch (exn){
            alert("Errore loadEvtInWin(): evento non caricato correttamente "+status+" "+exn);
        }
    }
    
    /**
     * Gestisce l'evento di click su un particolare marker presente all'interno
     * della mappa di google.
     * params: idluogo l'identificativo del luogo dove viene fatto click
     */
    this.loadEvtsInWin= function(idluogo){
        //se sono la stessa finestra non faccio niente
        if(!this.allWin[idluogo]){
            this.allWin[idluogo]= new google.maps.InfoWindow({
                //todo: questo fa schifo, almeno mettere in mapman una cosa per sistemare
                content:this.getMapsBalloonContent(mapman.placedEventsList[idluogo])
            });
        }
        else{
            this.allWin[idluogo].setContent(this.getMapsBalloonContent(mapman.placedEventsList[idluogo]));
        }
        if(phcman.getStatus()==phcman.STAT_CREATING_PATH){
        //phcman.drawPathFromLastPoint(mapman.placesList[idluogo]['latlng']); direi di non metterla
        }
        //1 marker alla volta
        //        if(this.actualWin!=null && this.allWin[this.actualWin]!=null)//anche se la seconda non dovrebbe mai verificarsi
        //            this.allWin[this.actualWin].close();
        this.closeActiveEvtWin();
        this.actualWin=idluogo;
        this.allWin[this.actualWin].open(mapman.map,mapman.placesList[idluogo].marker);
            
        //Permette di ricreare il balloon di informazioni se esso viene chiuso all'interno del browser
        google.maps.event.addListener(this.allWin[this.actualWin], 'click', function() {
            graphman.actualWin=-1;
        });
    }


    /**
     * Permette di chiudere tutti i balloon
     */
    this.closeActiveEvtWin=function(){
        if(this.actualWin!=null && this.allWin[this.actualWin]!=null)//anche se la seconda non dovrebbe mai verificarsi
            this.allWin[this.actualWin].close();
    //        for(var j in this.allWin){
    //            if(this.allWin[j]!=null){
    //                //alert("J"+j+" "+this.allWin[j].content);
    //                this.allWin[j].close();
    //            }
    //        }
    }
    
    /**
     * funzione che permette di scrivere una frase nell'intestazione
     */
    this.writePhrase=function(){
        var frase=frsman.getFrase();
        try{
            document.getElementById("mexMain").innerHTML="<div class='frase_titolo'>"+
            frase.frase+
            "</div><!--f6-->"+
            "<div class='frase_autore'>"+frase.autore+"</div><!--f7-->";
        } catch(e){
            //alert(dump(e));
            document.getElementById("mexMain").innerHTML="<div class='frase_titolo'>"+
        "La mappa del festival!"+
        "</div><!--f8-->"+
        "<div class='frase_autore'>Genova Citt&agrave; Digitale</div><!--f9-->";
        }
    }

    /**
     * disegna il DIV che aiuta l'utente nella creazione del nuovo percorso
     */
    this.redrawNewPathDiv=function(){

        var pathDiv= document.getElementById(this.constant_divPathInsert);
        var ret="";
        if(getUtente()!=null){
            switch(phcman.getStatus()){
                case phcman.STAT_VOID:
                    ret='<input type="button" style="word-wrap:\'break-word\';" onclick="phcman.createStartingPoint();" value="Nuovo percorso"/> ';
                    break;
                case phcman.STAT_CREATING_PATH:
                    var path=phcman.getPath();
                    ret='Partenza: '+phcman.startingPositionName+", ore "+phcman.printTime(phcman.time)+"<br/>";
                    for(var j in path){
                        if(path[j]!=null)
                            ret+=this.drawSinglePathPoi(path[j]);
                    }
                    ret +='<br/><input type="button" style="word-wrap:\'break-word\';" onclick="graphman.alterPath(null);" value="Elimina"/>';
                    ret +='<input type="button" style="word-wrap:\'break-word\';" onclick="phcman.savePath();" value="Salva"/>';
                    break;
            }
            pathDiv.innerHTML=ret;
        }
    }

    /**
     * ritorna la stringa rappresentante il poi
     */
    this.drawSinglePathPoi=function(point){
        var evento=null;
        var closebutton;
        ret="<div id='pathPoint-"+point.eventi_id+"'>";
        for(var j in evtman.eventList){
            if(evtman.eventList[j].id==point.eventi_id){
                evento=evtman.eventList[j];
                break;
            }
        }

        if(evento!=null){
            closebutton="<a href='javascript:graphman.alterPath("+point.ordine+")'>x</a>"
            ret+=closebutton+" "+evento.nome+" ";
            for(var k in evento.orari){
                if(evento.orari[k].id_tempo==point.tempo){
                    ret+=evento.orari[k].inizio+"-"+evento.orari[k].fine;
                    break;
                }
            }
        }

        return ret+"</div>"
    }

    /**
     * Presenta input per rimuovere eventi dal numero idOrdine in poi
     */
    this.alterPath=function(idOrdine){
        var text="";
        if(idOrdine==null){
            text="Con quest'azione cancellerai l'intero percorso. Sei sicuro?";
        } else{
            text="Con quest'azione rimuoverai l'evento selezionato("+idOrdine+") e quelli successivi. Sei sicuro?";
        }
        var iff=confirm(text);
        if(iff){
            if(idOrdine==null){
                phcman.setStatus(phcman.STAT_VOID);
            }
            else{
                phcman.removeFromOrder(idOrdine);
            }
        }
    }

}